package com.xh.rufongwallpaper.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.xh.rufongwallpaper.entity.DownloadRecord;

import java.util.Date;

/**
 * 下载服务接口
 *
 * @author XH
 */
public interface DownloadService {

    /**
     * 记录下载
     *
     * @param deviceId    设备ID，可为空
     * @param wallpaperId 壁纸ID
     * @return 下载记录
     */
    DownloadRecord recordDownload(String deviceId, Long wallpaperId);

    /**
     * 获取设备的下载记录
     *
     * @param deviceId  设备ID
     * @param pageIndex 页码(0-based)
     * @param pageSize  每页大小
     * @return 下载记录分页列表
     */
    Page<DownloadRecord> getDownloadsByDeviceId(String deviceId, int pageIndex, int pageSize);

    /**
     * 获取壁纸的下载记录
     *
     * @param wallpaperId 壁纸ID
     * @param pageIndex   页码(0-based)
     * @param pageSize    每页大小
     * @return 下载记录分页列表
     */
    Page<DownloadRecord> getDownloadsByWallpaperId(Long wallpaperId, int pageIndex, int pageSize);

    /**
     * 统计设备的下载次数
     *
     * @param deviceId 设备ID
     * @return 下载次数
     */
    long countDownloadsByDeviceId(String deviceId);

    /**
     * 统计壁纸的下载次数
     *
     * @param wallpaperId 壁纸ID
     * @return 下载次数
     */
    long countDownloadsByWallpaperId(Long wallpaperId);

    /**
     * 统计时间段内的下载次数
     *
     * @param startTime 开始时间
     * @param endTime   结束时间
     * @return 下载次数
     */
    long countDownloadsBetween(Date startTime, Date endTime);

    /**
     * 检查设备是否下载过壁纸
     *
     * @param deviceId    设备ID
     * @param wallpaperId 壁纸ID
     * @return 是否下载过
     */
    boolean hasDownloaded(String deviceId, Long wallpaperId);
} 